#ifndef __LED_H
#define __LED_H



// 包含STM32的库文件，提供GPIO_TypeDef, uint16_t, BitAction等定义
// 确保你的RCC、GPIO相关头文件路径正确，通常是stm32f10x.h或在你项目的固件库配置中
#include "stm32f10x.h"


typedef struct {
    GPIO_TypeDef* GPIOx;    // GPIO端口
    uint16_t GPIO_Pin;      // GPIO引脚
} LED_Config_TypeDef;


 extern LED_Config_TypeDef myLEDs[];
/**
  * @brief  初始化指定GPIO引脚为推挽输出模式，并设置其初始状态。
  * @param  GPIOx: GPIO组，例如GPIOA, GPIOB, GPIOC, 等。
  * @param  GPIO_Pin: 要初始化的引脚，例如GPIO_Pin_0, GPIO_Pin_1, 等。
  * @param  initialState: 初始状态，可以是Bit_RESET (低电平) 或 Bit_SET (高电平)。
  *         对于共阴极LED，Bit_SET 会使LED亮；Bit_RESET 会使LED灭。
  *         对于共阳极LED，Bit_RESET 会使LED亮；Bit_SET 会使LED灭。
  * @retval 无
  */
void LED_GPIO_Init(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction initialState);

/**
  * @brief  翻转指定LED引脚的状态（亮变灭，灭变亮）。
  *         此函数会读取当前引脚的输出状态并翻转它。
  * @param  GPIOx: LED所在的GPIO组。
  * @param  GPIO_Pin: LED引脚。
  * @retval 无
  */
void LED_Toggle(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

/**
  * @brief  点亮指定LED。
  *         注意：默认假设LED为共阴极接法（高电平点亮）。
  *         如果你使用的是共阳极LED，你需要修改此函数或使用一个更通用的控制函数。
  * @param  GPIOx: LED所在的GPIO组。
  * @param  GPIO_Pin: LED引脚。
  * @retval 无
  */
void LED_On(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

/**
  * @brief  熄灭指定LED。
  *         注意：默认假设LED为共阴极接法（低电平熄灭）。
  *         如果你使用的是共阳极LED，你需要修改此函数或使用一个更通用的控制函数。
  * @param  GPIOx: LED所在的GPIO组。
  * @param  GPIO_Pin: LED引脚。
  * @retval 无
  */
void LED_Off(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);


/**
 * * @brief  初始化LED的GPIO引脚。
 * @param  无
 * @retval 无
 * */
void LEDS_GPIO_Init(void); // 初始化LED的GPIO引脚


/**
 * * @brief  LEDS_Run函数
 * @param  无
 * @retval 无
 * */
void LEDS_Runs(void); // LEDS_Run函数


void LEDS_off(void); // 关闭所有LED
#endif // __LED_H
